package ar.edu.uade.centroDistribucion.Modelo;

import java.util.Hashtable;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import ar.edu.uade.centroDistribucion.facade.FacadeCentroDistribucion;
import ar.edu.uade.centroDistribucion.valueObjects.EnvTVO;
import ar.edu.uade.centroDistribucion.valueObjects.NuevoArticuloVO;
import ar.edu.uade.centroDistribucion.valueObjects.RepAFVO;
import ar.edu.uade.centroDistribucion.valueObjects.SolDistVO;
import ar.edu.uade.centroDistribucion.valueObjects.SolFabrVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaEnvTVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaNuevoArticuloVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaRepAFVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaSolDistVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaSolFabrVO;

/**
 * Clase base que representa al facade del lado del cliente
 *
 */
public class BusinessDelegate {

	private FacadeCentroDistribucion facadeCentroDistribucion;
	private InitialContext initContext;
	public BusinessDelegate() throws Exception
	{
		this.inicializarContexto();
	}
	
	private void inicializarContexto() throws Exception
	{
		try {
			Hashtable<String, String> env = new Hashtable<String, String>();
			env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
			env.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");			
			initContext = new InitialContext(env);			
			System.out.print("Conectando...");
			facadeCentroDistribucion = (FacadeCentroDistribucion)initContext.lookup("jnp://127.0.0.1:1099/CentroDistribucionTortuguitas_EAR/FacadeCentroDistribucionBean/remote");
			System.out.print("Conectado");
		} catch (Exception e) {
			System.out.print(e.getMessage());
			throw e;
						
		}
		
	}
	public void GenerarEnvioATienda(EnvTVO envTVO,int tiendaId) {
		facadeCentroDistribucion.GenerarEnvioATienda(envTVO, tiendaId);
	}
	

	public List<VistaEnvTVO> IniciarEnvioATienda(int tiendaId) {
		return facadeCentroDistribucion.IniciarEnvioATienda(tiendaId);
	}
	public List<VistaSolFabrVO> IniciarSolicitudFabricacion() {
		return facadeCentroDistribucion.IniciarSolicitudFabricacion();
	}

	public VistaNuevoArticuloVO ProcesarArticuloNuevo(NuevoArticuloVO articuloVO)
	{
		return facadeCentroDistribucion.ProcesarArticuloNuevo(articuloVO);
	}


	public VistaSolDistVO ProcesarSolicitudDistribucion(SolDistVO solDist) {
		return facadeCentroDistribucion.ProcesarSolicitudDistribucion(solDist);
	}


	public List<VistaRepAFVO> ReponerArticulos(RepAFVO repaf) {
		return facadeCentroDistribucion.ReponerArticulos(repaf);		
	}

	public void GenerarSolicitudFabricacion(List<SolFabrVO> solFabrVO) {
		facadeCentroDistribucion.Generar(solFabrVO);
		
	}
	
}
